import { nanoid } from 'nanoid'

export const basicDefaultData = () => ({
  dataIndex: '',
  hideTitle: false,
  passWord: false,
  columnAdd: true,
  columnEdit: true,
  columnQuery: true,
  // changeRule: 'notNull',
  disabled: false,
  required: false,
  // 查询配置
  queryType: 'eq',
  searchType: 'input',
  controlType: '1', // 1-普通 2-范围
  dataType: 'string', // 数据类型
  nextRelation: 'and',
  fixed: false,
  listStyleShow: undefined, // 标签展示
  tagColor: undefined, // 标签颜色
  isSearch: false,
  isExKey: false,
  meterId: undefined,
  meterName: undefined,
  dataSource: undefined,
  dataSourceId: undefined, // 数据源ID
  dataOptionField: undefined, // 数据源传值字段
  dataCondition: undefined, // 数据源与当前表字段绑定关系
  dataShowFields: undefined, // 数据源展示字段
  dataShowAlias: undefined, // 数据源展示字段别名
  precision: undefined, // 数字输入框 精确到
  useInput: undefined, // 是否手填，用于流程中
  request: undefined,
  desensitization: false, // 是否脱敏
  validateCondition: { // 校验数据源
    dataSourceId: undefined, // 校验数据源ID
    dataCondition: []
  }, // 校验条件
  condition: [
    {
      groupIndex: 0,
      queryKey: 'start_' + nanoid(10),
      queryName: '',
      queryType: ''
    },
    {
      groupIndex: 1,
      queryKey: 'end_' + nanoid(10),
      queryName: '',
      queryType: ''
    }
  ]
})

export const changeRuleOptions = [{
  label: '正则',
  value: 'regular'
}, {
  label: '数据重复',
  value: 'repeat'
},
//   {
//   label: '数据字典',
//   value: 'dictionary'
// },
  {
    label: '邮件',
    value: 'eMail'
  }, {
    label: '长度校验',
    value: 'length'
  }, {
    label: '数值区间',
    value: 'numRange'
  }, {
    label: '数组可选数量',
    value: 'size'
  }
//   {
//   label: '数据类型',
//   value: 'dateType'
// }
]

export const queryCondition = [
  {
    label: '等于',
    value: 'eq'
  },
  {
    label: '模糊匹配',
    value: 'like'
  },
  // {
  //   label: '空',
  //   value: 'null'
  // },
  // {
  //   label: '非空',
  //   value: 'noNull'
  // },
  {
    label: '不等于',
    value: 'ne'
  },
  {
    label: '小于等于',
    value: 'lte'
  },
  {
    label: '大于等于',
    value: 'gte'
  },
  {
    label: '小于',
    value: 'lt'
  },
  {
    label: '大于',
    value: 'gt'
  },
  {
    label: '在...之中',
    value: 'in'
  },
  {
    label: '不在...之中',
    value: 'nin'
  },
  {
    label: '是否',
    value: 'if'
  }
  // {
  //   label: '正则',
  //   value: 'regex'
  // },
  // {
  //   label: '大小',
  //   value: 'size'
  // },
  // {
  //   label: '所有都满足',
  //   value: 'all'
  // },
  // {
  //   label: '存在',
  //   value: 'exists'
  // },
  // {
  //   label: '字段类型',
  //   value: 'type'
  // }
]
export const queryConditionMix = [
  {
    label: '求和',
    value: 'sum'
  },
  {
    label: '总数',
    value: 'count'
  },
  {
    label: '最后一条记录',
    value: 'last'
  },
  {
    label: '合并到指定字段',
    value: 'addToSet'
  },
  {
    label: '第一条记录',
    value: 'first'
  },
  // {
  //   label: '将指定字段的值作为一个数组添加到结果文档中',
  //   value: 'push'
  // },
  {
    label: '平均数',
    value: 'avg'
  },
  {
    label: '最小值',
    value: 'min'
  },
  {
    label: '最大值',
    value: 'max'
  }
  // {
  //   label: '将指定字段的唯一值添加到结果文档中的集合中',
  //   value: 'add_to_set'
  // },
  // {
  //   label: '计算指定字段的总体标准差(总体标准偏差)',
  //   value: 'std_dev_pop'
  // },
  // {
  //   label: '计算指定字段的样本标准差(样本标准偏差)',
  //   value: 'std_dev_samp'
  // }
]
export const searchTypeOptions = [{
  label: '输入框',
  value: 'input'
}, {
  label: '下拉框（单选）',
  value: 'select'
}, {
  label: '下拉框（多选）',
  value: 'selectMultiple'
}, {
  label: '日期时间选择',
  value: 'date'
}, {
  label: '日期选择(年/月/日)',
  value: 'date2'
}, {
  label: '月份选择(年/月)',
  value: 'date3'
}]
export const dataTypeOptions = [
  {
    label: '字符串',
    value: 'string'
  },
  {
    label: '文件',
    value: 'file'
  },
  {
    label: '整数',
    value: 'int'
  },
  {
    label: '浮点数',
    value: 'float'
  },
  {
    label: '双精度浮点数',
    value: 'double'
  },
  {
    label: '百分比',
    value: 'rate'
  },
  {
    label: '长整型',
    value: 'long'
  },
  {
    label: '列表',
    value: 'list'
  },
  {
    label: '布尔值',
    value: 'boolean'
  },
  {
    label: '时间戳',
    value: 'timestamp'
  }
]
export const typeOptions = [
  {
    label: '输入框',
    value: 'input'
  },
  {
    label: '下拉框',
    value: 'select'
  },
  {
    label: '单选框',
    value: 'radio'
  },
  {
    label: '上传',
    value: 'upload'
  },
  {
    label: '日期选择器',
    value: 'datePicker'
  },
  {
    label: '多行文本框',
    value: 'textarea'
  },
  {
    label: '数字输入框',
    value: 'inputNumber'
  },
  {
    label: '多选框',
    value: 'checkbox'
  },
  {
    label: '开关',
    value: 'switch'
  },
  {
    label: '时间选择器',
    value: 'timePicker'
  },
  {
    label: '键值对输入',
    value: 'keyValueInput'
  },
  {
    label: '富文本框',
    value: 'editor'
  },
  {
    label: '树状控件',
    value: 'tree'
  },
  {
    label: '计算公式',
    value: 'countFormula'
  },
  {
    label: '级联选择',
    value: 'cascader'
  },
  {
    label: '树型选择',
    value: 'treeSelect'
  },
  {
    label: '表格',
    value: 'table'
  },
  {
    label: '时间轴',
    value: 'timeline'
  },
  {
    label: '默认展示',
    value: 'texttag'
  }
]
export const tagColorList = [
  {
    label: '粉色',
    value: 'pink'
  },
  {
    label: '红色',
    value: 'red'
  },
  {
    label: '橙色',
    value: 'orange'
  },
  {
    label: '绿色',
    value: 'green'
  },
  {
    label: '青色',
    value: 'cyan'
  },
  {
    label: '蓝色',
    value: 'blue'
  },
  {
    label: '紫色',
    value: 'purple'
  },
  {
    label: '默认',
    value: ''
  }
]

export const menuList = [
  {
    title: '数据结果',
    description: '数据结果、状态等对比',
    checkRule: 'result'
  },
  {
    title: '数据重复',
    description: '数据结果是否重复',
    checkRule: 'repeat'
  },
  {
    title: '数据长度',
    description: '数据字数条件',
    checkRule: 'length'
  },
  {
    title: '数值格式(邮件)',
    description: '数值是否为邮件格式',
    checkRule: 'eMail'
  },
  {
    title: '数组可选数量',
    description: '多个结果时的结果数量',
    checkRule: 'size'
  },
  {
    title: '正则',
    description: '验证表达式',
    checkRule: 'regular'
  },
  {
    title: '时间范围',
    description: '定义日期时间条件',
    checkRule: 'timeRange'
  },
  {
    title: '关联数据源',
    description: '关联数据源对比',
    checkRule: 'data'
  },
  {
    title: '公式计算',
    description: '运算符等条件定义条件',
    checkRule: 'el'
  }
]

export const componentTypeFileName = {
  input: 'InputInfo',
  select: 'SelectInfo',
  radio: 'RadioInfo',
  upload: 'UploadInfo',
  datePicker: 'DatePickerInfo',
  textarea: 'TextareaInfo',
  inputNumber: 'InputNumberInfo',
  checkbox: 'CheckboxInfo',
  switch: 'SwitchInfo',
  timePicker: 'TimePickerInfo',
  divider: 'DividerInfo',
  keyValueInput: 'KeyValueInputInfo',
  divModel: 'DivModelInfo',
  editor: 'EditorInfo',
  tree: 'TreeInfo',
  countFormula: 'CountFormulaInfo',
  table: 'TableInfo',
  cascader: 'CascaderInfo',
  timeline: 'TimelineInfo',
  treeSelect: 'TreeSelectInfo'
}

export const phoneComponentTypeFileName = {
  container: 'ContainerInfo'
}
